using System;
using System.Collections;
using Curriculum.DataAccess.Server;
using Curriculum.Db4oHttpModule;
using Curriculum.LectoresXML.LectorMetadatos;
using Curriculum.Manejadores;
using Curriculum.Metadatos.ClasesMetadatos;
using Utiles;

namespace Actualizacion
{
	/// <summary>
	/// Summary description for ActualizacionMetadatos.
	/// </summary>
	public class ActualizacionAtributosXML : Actualizador
	{
		public ActualizacionAtributosXML()
		{}


		public void Ejecutar()
		{
			AtributosDbToXML();
		}

		public string GetMensajeOk()
		{
			return "Atributos XML Actualizados Correctamente";
		}

		private void AtributosDbToXML()
		{
			IList lista = new ObjectServer(Db4oHttpModule.Client).GetAllObjects(typeof(AtributoMetadato));
			((ArrayList)lista).Sort(new GenericComparer("Id", true));
			ManejadorAtributosMetadatos manejador = new ManejadorAtributosMetadatos();

			ArrayList listaAtributos = new ArrayList();
			ListaAtributos listaAtributosXML = new ListaAtributos();
			
			foreach (AtributoMetadato atriMeta in lista)
			{
				Atributo atributo = new Atributo();
				atributo.idAtributo = atriMeta.Id;
				atributo.longitud = atriMeta.Longitud;
				atributo.nombre = atriMeta.Nombre;
				atributo.opcional = atriMeta.Opcional;
				atributo.tipo = atriMeta.IdTipoDato;
				listaAtributos.Add(atributo);
			}

			listaAtributosXML.Atributos = new Atributo[listaAtributos.Count];
			listaAtributos.CopyTo(listaAtributosXML.Atributos);
			
			manejador.GuardarListaAtrubutosEnXML(listaAtributosXML);
		}

	}
}
